package demo4;

// 具体同事类：文本框（存储和展示文本）
public class TextBox extends Colleague {
    private String text; // 当前文本
    private int selectionStart; // 选中文本起始位置
    private int selectionEnd; // 选中文本结束位置

    public TextBox(EditorMediator mediator) {
        super(mediator);
        this.text = "";
        this.selectionStart = 0;
        this.selectionEnd = 0;
    }

    // 获取选中文本
    public String getSelectedText() {
        if (selectionStart >= selectionEnd) return "";
        return text.substring(selectionStart, selectionEnd);
    }

    // 删除选中文本（剪切时使用）
    public void deleteSelectedText() {
        if (selectionStart >= selectionEnd) return;
        text = text.substring(0, selectionStart) + text.substring(selectionEnd);
        // 重置选中状态
        selectionEnd = selectionStart;
    }

    // 插入文本（粘贴时使用）
    public void insertText(String content) {
        // 先删除选中的文本，再插入新内容
        deleteSelectedText();
        text = text.substring(0, selectionStart) + content + text.substring(selectionStart);
        // 更新光标位置到插入内容后
        selectionStart += content.length();
        selectionEnd = selectionStart;
    }

    // 设置选中文本范围（模拟用户选择操作）
    public void setSelection(int start, int end) {
        this.selectionStart = Math.max(0, start);
        this.selectionEnd = Math.min(text.length(), end);
    }

    // 获取当前文本
    public String getText() {
        return text;
    }

    // 设置文本（初始化用）
    public void setText(String text) {
        this.text = text;
    }
}
